#ifndef WORLD_H
#define WORLD_H

#include "camera/Camera.hpp"
#include "core/Visitor.h"
#include "object/GameObject.hpp"

#include "../game/object/Player.h"

#include "core/Octree.h"

class Camera;
class Light;

class World : public GameObject {
    private:
        Camera* camera;
        Player* player;

        Octree* tree;
        int asteroids;

    public:
        World(std::string aName = NULL);
        virtual ~World();

        Camera* getCamera();
        Player* getPlayer();

        void accept(Visitor*);
        void add(GameObject*);
        GameObject* getChild(std::string);

        std::vector<GameObject*> addLater;
        std::vector<GameObject*> deleteLater;
        Asteroid* selectedAsteroid;

        Octree* getTree();

        int getAsteroidsLeft();
        void setAsteroidsLeft(int);

        static int LEVEL_SIZE;
};

#endif // WORLD_H
